home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / qbox10.zip / QUICKBOX.INC < prev    next >
Text File  |  1992-01-22  |  5KB  |  146 lines

  1.                                                                          $IF 0
  2.  ╒═════════════════════════════════════════════════════════════════════════╕
  3.  │PowerBASIC :         ---<< Quick Box Displays >>---         January, 1992│
  4.  │Source file:              --<< SOURCE CODE >>--              QuickBox.INC│
  5.  ╘═════════════════════════════════════════════════════════════════════════╛
  6.      Copyright  (c) 1992  ─  Business Enhancement Partnership Group 
  7.                                                                         $ENDIF
  8.  
  9.  
  10.  SUB QBOX(Box.Disp%,Box.Top%,Box.Lines%,Box.Left%,Box.Width%,Box.Fg%,Box.Bg%)
  11. '===========================================================================
  12.  SHARED Ulr%, Ulc%, Lrr%, Lrc%, Box.Colors%,Frame%,Shadow%
  13.  
  14.  CALL Video.Image(Box.Disp%)
  15.  IF Box.Disp% <> 0 THEN EXIT SUB
  16.  
  17.  CALL BoxAsm(Box.Address)
  18.  
  19.  IF Box.Width%/2<>INT(Box.Width%/2) THEN INCR Box.Width%
  20.  Box.Width% = MIN(Box.Width%,78)
  21.  
  22.  IF  Box.Left% < 1_
  23.  THEN
  24.      Ulc% = INT(80-Box.Width%)/2
  25.      Lrc% = INT(79-Ulc%)
  26.  ELSE
  27.      Ulc% = MAX(Box.Left%,1)
  28.      Lrc% = INT(Ulc%+Box.Width%-1)
  29.  END IF
  30.  
  31.  IF Box.Top% <1_
  32.  THEN
  33.      Ulr% = INT(24-Box.Lines%)/2
  34.  ELSE
  35.      Ulr% = MAX(1,Box.Top%)
  36.  END IF
  37.  
  38.  Lrr% = Ulr% + Box.Lines%
  39.  
  40.  Box.Colors% = Box.Bg% * 16 +Box.Fg%
  41.  Frame%=1: Shadow%=1                    'SET TO Zero TO TURN OFF
  42.  SOUND 400,.1
  43.  SOUND 100,.1
  44.  CALL absolute Box.Address (Ulr%,Ulc%,Lrr%,Lrc%,Box.Colors%,Frame%,Shadow%)
  45.  DEF SEG
  46.  Box.Top% = Ulr%:  Box.Left% = Ulc%
  47.  END SUB
  48.  
  49.  
  50.  SUB Video.Image(Save.Restore)  PUBLIC
  51. '=============================                ' Save/Restore Screen Displays
  52.  STATIC Box.Nbr
  53.  LOCAL Screen.Image(), VideoAbs&, StorSeg&, StorOff, StorAbs&,_
  54.        Segment&, Start&, Finish&, ScrnId$, Length&, Monitor.Type,_
  55.        VideoSeg&
  56.  
  57.  DEF SEG = &H0040
  58.  Monitor.Type=PEEK(&H0049)
  59.  IF Monitor.Type=7_
  60.  THEN
  61.      VideoSeg&=&HB000
  62.  ELSE
  63.      VideoSeg&=&HB800
  64.  END IF
  65.  
  66.  IF Save.Restore=0_                                   ' Save a new screen
  67.  THEN
  68.     INCR Box.Nbr
  69.     IF   Box.Nbr>99_
  70.     THEN
  71.          Box.Nbr=-1
  72.          EXIT SUB
  73.     END IF
  74.     REDIM       Screen.Image(1:2000)
  75.     VideoAbs& = VideoSeg&*16
  76.     StorSeg&  = VARSEG(Screen.Image(1))
  77.     StorOff   = VARPTR(Screen.Image(1))
  78.     StorAbs&  = (StorSeg&*16)+StorOff
  79.     DEF SEG   = 0
  80.     POKE$       StorAbs&, PEEK$(VideoAbs&,4000)
  81.                                                '--<< Save Image To Disk >>--
  82.     Segment&  = VARSEG(Screen.Image(1))
  83.     Start&    = VARPTR(Screen.Image(1))
  84.     Finish&   = VARPTR(Screen.Image(2000))
  85.     ScrnId$   = "SCREEN"+USING$("##",Box.Nbr)+".IMG"
  86.     REPLACE  " " WITH "0" IN ScrnId$
  87.     Length&   = Finish& - Start& + 2
  88.     DEF SEG   = VideoSeg&
  89.  
  90.     BSAVE       ScrnId$,StartAdr&,Length&
  91.     DEF SEG
  92.     EXIT SUB
  93.   END IF
  94.  
  95.   IF Save.Restore<0 THEN Box.Nbr=1
  96.                                           '--<< Restore Screen from Disk >>--
  97.   IF Box.Nbr>0 THEN
  98.     DEF SEG  =  VideoSeg&
  99.     ScrnId$  = "SCREEN"+USING$("##",Box.Nbr)+".IMG"
  100.     REPLACE " " WITH "0" IN ScrnId$
  101.  
  102.     IF DIR$(ScrnId$,0)>""_                  '--<< Does Image File Exist? >>--
  103.     THEN
  104.        BLOAD  ScrnId$
  105.        DECR Box.Nbr,1
  106.     END IF
  107.   END IF
  108.  
  109.   IF  Save.Restore < 0_                        '--<< Kill All .IMG Files >>--
  110.   THEN
  111.         IF    DIR$("SCREEN*.IMG",0) > ""_
  112.         THEN  KILL "SCREEN*.IMG"
  113.   END IF
  114.  END SUB
  115.  
  116.  
  117.  
  118.  
  119.  SUB BoxAsm(Box.Address)
  120. '====================
  121.  SHARED Wndow()
  122.   REDIM WNDOW(270)
  123.   WhereAt& = VARSEG(Wndow(0))
  124.   DEF SEG = WhereAt&
  125.   Box.Address = VARPTR(Wndow(0))
  126.   RESTORE windhex:
  127.   FOR i% = 0 TO 269
  128.      READ D$: POKE i%, VAL("&H" + D$)
  129.   NEXT
  130.  
  131.  windhex:
  132. '────────
  133. DATA 55,8B,EC,83,EC,E,53,51,6,57,B9,7,0,BF,0,0,8B,5B,6,8B,7,48,89,43,F2,47,47
  134. DATA E2,F3,FF,46,F6,FF,46,F4,FF,46,F2,BB,0,B0,A1,10,0,25,30,0,3D,30,0,74,3,BB
  135. DATA 0,B8,8E,C3,8B,5E,FE,B8,A0,0,F7,E3,8B,5E,FC,D1,E3,3,C3,8B,F8,57,8B,46,F8
  136. DATA 8B,5E,FC,2B,C3,40,8B,D8,53,8B,46,FA,8B,56,FE,2B,C2,40,8B,C8,51,BA,0,0,8A
  137. DATA 66,F6,B0,20,83,7E,F4,0,74,5,B0,C4,BA,1,0,51,8B,CB,83,7E,F4,0,74,8,50,B0
  138. DATA B3,AB,83,E9,1,58,F3,AB,83,7E,F4,0,74,8,50,83,EF,2,B0,B3,AB,58,83,FA,0,75
  139. DATA E,83,7E,F2,0,74,8,50,B0,8,47,AA,4F,4F,58,2B,FB,2B,FB,81,C7,A0,0,59,B0,20
  140. DATA 83,7E,F4,0,74,7,83,F9,2,75,2,B0,C4,BA,0,0,E2,AF,83,7E,F2,0,74,B,8B,CB,B0
  141. DATA 8,83,C7,2,47,AA,E2,FC,83,7E,F4,0,74,27,59,5B,5F,B0,DA,AB,3,FB,3,FB,83,EF
  142. DATA 4,B0,BF,AB,50,B8,A0,0,49,F7,E1,3,F8,58,83,EF,2,B0,D9,AB,2B,FB,2B,FB,B0
  143. DATA C0,AB,5F,7,59,5B,8B,E5,5D,CA,E
  144.  
  145. END SUB
  146.